home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / LineNumberReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.7 KB  |  127 lines

  1. package java.io;
  2.  
  3. public class LineNumberReader extends BufferedReader {
  4.    private int lineNumber = 0;
  5.    private int markedLineNumber;
  6.    private boolean skipLF;
  7.    private boolean markedSkipLF;
  8.    private static final int maxSkipBufferSize = 8192;
  9.    private char[] skipBuffer = null;
  10.  
  11.    public LineNumberReader(Reader var1) {
  12.       super(var1);
  13.    }
  14.  
  15.    public LineNumberReader(Reader var1, int var2) {
  16.       super(var1, var2);
  17.    }
  18.  
  19.    public void setLineNumber(int var1) {
  20.       this.lineNumber = var1;
  21.    }
  22.  
  23.    public int getLineNumber() {
  24.       return this.lineNumber;
  25.    }
  26.  
  27.    public int read() throws IOException {
  28.       synchronized(this.lock) {
  29.          int var2 = super.read();
  30.          if (this.skipLF) {
  31.             if (var2 == 10) {
  32.                var2 = super.read();
  33.             }
  34.  
  35.             this.skipLF = false;
  36.          }
  37.  
  38.          switch (var2) {
  39.             case 13:
  40.                this.skipLF = true;
  41.             case 10:
  42.                ++this.lineNumber;
  43.                return 10;
  44.             default:
  45.                return var2;
  46.          }
  47.       }
  48.    }
  49.  
  50.    public int read(char[] var1, int var2, int var3) throws IOException {
  51.       synchronized(this.lock) {
  52.          int var5 = super.read(var1, var2, var3);
  53.  
  54.          for(int var6 = var2; var6 < var2 + var5; ++var6) {
  55.             char var7 = var1[var6];
  56.             if (this.skipLF) {
  57.                this.skipLF = false;
  58.                if (var7 == '\n') {
  59.                   continue;
  60.                }
  61.             }
  62.  
  63.             switch (var7) {
  64.                case '\r':
  65.                   this.skipLF = true;
  66.                case '\n':
  67.                   ++this.lineNumber;
  68.             }
  69.          }
  70.  
  71.          return var5;
  72.       }
  73.    }
  74.  
  75.    public String readLine() throws IOException {
  76.       synchronized(this.lock) {
  77.          String var2 = super.readLine(this.skipLF);
  78.          this.skipLF = false;
  79.          if (var2 != null) {
  80.             ++this.lineNumber;
  81.          }
  82.  
  83.          return var2;
  84.       }
  85.    }
  86.  
  87.    public long skip(long var1) throws IOException {
  88.       if (var1 < 0L) {
  89.          throw new IllegalArgumentException("skip() value is negative");
  90.       } else {
  91.          int var3 = (int)Math.min(var1, 8192L);
  92.          synchronized(this.lock) {
  93.             if (this.skipBuffer == null || this.skipBuffer.length < var3) {
  94.                this.skipBuffer = new char[var3];
  95.             }
  96.  
  97.             long var5;
  98.             int var7;
  99.             for(var5 = var1; var5 > 0L; var5 -= (long)var7) {
  100.                var7 = this.read(this.skipBuffer, 0, (int)Math.min(var5, (long)var3));
  101.                if (var7 == -1) {
  102.                   break;
  103.                }
  104.             }
  105.  
  106.             return var1 - var5;
  107.          }
  108.       }
  109.    }
  110.  
  111.    public void mark(int var1) throws IOException {
  112.       synchronized(this.lock) {
  113.          super.mark(var1);
  114.          this.markedLineNumber = this.lineNumber;
  115.          this.markedSkipLF = this.skipLF;
  116.       }
  117.    }
  118.  
  119.    public void reset() throws IOException {
  120.       synchronized(this.lock) {
  121.          super.reset();
  122.          this.lineNumber = this.markedLineNumber;
  123.          this.skipLF = this.markedSkipLF;
  124.       }
  125.    }
  126. }
  127.